#include "Alarm_Task.h"
#include "74HC595.h"
#include "Output.h"
#include "Power_Task.h"
#include "Sensor_Read_Task.h"
#include "W25QXX.h"
#include "modbus.h"

void Alarm_Task(void* pdata) {
    for (;;) {
        uint8_t  reset_state = Get_Reset();          // 获取启动状态
        uint32_t comtime     = Get_receive_time();   // 获取接收到报文的时间

        if (comtime == 0 && reset_state == NORMAL_MODE) {   // 正常启动，通讯超时
            Set_Reset(ERROR_MODE);
            SystemReset();
        }
        if (Sys_Base.para.work_state != STA_ON) {   // 空舍期
            reset_state = 0;
        }
        OSTimeDly(100);
    }
}

/*设置启动状态*/
void Set_Reset(uint8_t mode) {
    if (Sys_Base.para.reset != mode) {
        Sys_Base.para.reset = mode;
        SPI_Flash_Write((INT8U*) &Sys_Base.para.wMagic, para_data_addr, sizeof(Sys_Base.para));
    }
}
/*获取重启状态*/
uint8_t Get_Reset(void) {
    return Sys_Base.para.reset;
}
